The task of performing modern design-entry/description for an electronic design often includes execution of the following tasks: (a) instantiation of components into the design; and (b) inter-connection of instance terminals (usually referred to as pins or ports). For the purpose of discussion, an “instance” is a specific instantiation of a component, or cell. Cells can be hierarchical (and thus themselves contain instantiations of other cells), or flat (i.e. physical).
Modern designs are very complex, in that they contain many hundreds of thousands to potentially millions of physical instances, and potentially hundreds/thousands of hierarchical instances. Architecture-level connectivity specification, which generally specifies the interconnection between hierarchical instances, may be performed using one of the following two approaches: (1) using a text editor to hand-write HDL or (2) using a schematic-entry tool to visually create and specify connections.
The problem with these possible approaches is that as the modern design space becomes larger and larger and ever more complex, it becomes very difficult for a typical user to efficiently see the design-space in which they are working with either of these methods. This causes the user to have difficulty navigating the design space to, for instance, find the ports on hierarchical instances that should be connected together.
Another drawback with using a text-editor HDL-based design entry is that it is difficult to quickly search for a port of a certain type or name on a specific instance. This causes the user to have to largely manually search for such a port, using primitive text-editor-based search techniques.
One other problem is that text-editor HDL based approaches allow for a multitude of mistakes to be made by the user, including contention creation, connection of incompatible instance-ports (e.g., functional or electrical incompatibility), or simple misspellings that result in opens or failure to connect. These types of mistakes can be very costly to debug in a simulation environment, which is where they are typically found.
Schematic-entry specification of design connectivity help the user to visualize components as physical entities, but even the best schematic-drawing environments do not effectively represent complex connectivity in a way that is easy to read, to filter, or to edit. For instance, schematics at even the hierarchical/architectural level for modern, complex designs tend to look like a “rats nest” of connections, and quickly become practical unusable for real design-entry.
Typical methods to organize schematic-entry-based approaches to make them more readable essentially amount to breaking the design up across multiple schematic sheets, thus fracturing the design into so many pieces that it becomes difficult to really see the big picture, or change the fracturing to suit the current visualization needs of the user.
Therefore, there is clearly a need for implementing design entry that addresses these and other problems.